package cn.px.dao.entity.repair;

import lombok.Data;

import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;

import cn.px.common.bean.DataScope;

import javax.persistence.Transient;

/**
 * @Description 保修单实体类
 * @author 品讯科技
 * @date 2024-08
 * @Version Copyright (c) 2019,北京乾元坤和科技有限公司 All rights reserved.
 */
@Table(name = "t_repair_application_form")
@Data
public class RepairApplicationForm implements Serializable {
    private String refuseRemark;//拒单理由

    /**
     * 主键
     */
    @Id
    private String id;

    /**
     * 设备型号ID
     */
    private String modelId;
    /**
     * 设备id
     */
    private String sbId;
    /**
     * 多长时间修复好
     */
    private Double limitHours;
    /**
     * 设备id
     */
    @Transient
    private String sbNo;
    /**
     * 设备使用位置
     */
    @Transient
    private String sbCph;
    /**
     * 是否停机: 0-否 1-是
     */
    private Integer needStop;
    /**
     * 是否计划性维修：0：否，1是
     */
    private Integer planFlag;
    /**
     * 部件id
     */
    private String partId;
    /**
     * 报修单号
     */
    private String no;
    /**
     * 报修来源:1-点检 2-保养 3-润滑 4-现场
     */
    private Integer source;

    /**
     * 要求日期
     */
    private LocalDate limitDate;

    /**
     * 报修时间
     */
    private LocalDateTime applyTime;
    /**
     * 紧急等级: 1-一级 2-二级 3-三级
     */
    private Integer level;
    /**
     * 问题描述
     */
    private String content;
    /**
     * 报修状态: 1-待分配 2-已分配 3-已完成 4-已撤销
     */
    private Integer status;
    /**
     * 备注
     */
    private String remark;
    /**
     * 故障类别id
     */
    private String repairErrorTypeId;
    /**
     * 维修开始时间
     */
    private LocalDateTime repairStartTime;
    /**
     * 维修结束时间
     */
    private LocalDateTime repairEndTime;
    /**
     * 派工时间
     */
    private LocalDateTime repairDispatchTime;
    /**
     * 派工历史
     */
    private String repairDispatchList;
    /**
     * 派工备注
     */
    private String repairDispatchRemark;
    /**
     * 接收耗时，响应时间：小时=维修接收时间-报修时间
     */
    private Double receiveMinutes;
    /**
     * 维修耗时：小时=维修结束时间-维修接收时间
     */
    private Double repairMinutes;
    /**
     * 设备停机修复时间：分钟=维修结束时间-报修时间
     */
    private Double dealMinutes;
    /**
     * 设备停机修复时间：报修类型：1：计划性维修，2非计划性维修，3其他
     */
    private Integer category;
    /**
     * 维修耗时：0否，1是
     */
    private Boolean repairOvertime;
    /**
     * 接收耗时：0否，1是
     */
    private Boolean receiveOvertime;
    /**
     * 报修人员id
     */
    private String userId;
    /**
     * 维修人员id
     */
    private String repairUserId;

    /**
     * 异常类型名称
     */
    @Transient
    private String repairErrorTypeName;

    /**
     * 维修描述
     */
    private String repairContent;

    /**
     * 维修次数
     */
    private Integer repairTimes;

    /**
     * 验收人
     */
    private String checkUserId;
    /**
     * 验收开始
     */
    private LocalDateTime checkStartTime;
    /**
     * 验收结束
     */
    private LocalDateTime checkEndTime;
    /**
     * 验收描述
     */
    private String checkContent;
    /**
     * 审核描述
     */
    private String examineContent;
    /**
     * 报修图片
     */
    private String applicationFile;
    /**
     * 维修图片
     */
    private String repairFile;
    /**
     * 验收图片
     */
    private String checkFile;
    /**
     * 创建日期
     */
    private LocalDateTime createdTime;
    /**
     * 更新日期
     */
    private LocalDateTime updateTime;
    /**
     * 创建人
     */
    private String createdUserId;
    /**
     * 更新人
     */
    private String updateUserId;
    /**
     * 实际执行人姓名
     */
    private String actualUser;

    /**
     * 主维修单号
     */
    private String mainRepairId;

    /**
     * 委外类别
     */
    private Integer outType;
    private String outNo;
    /**
     * 类型
     */
    private Integer type;
    /**
     * 报修人
     */
    @Transient
    private String userName;
    /**
     * 维修人
     */
    @Transient
    private String repairUserName;
    /**
     * 验收人
     */
    @Transient
    private String checkUserName;
    /**
     * 创建人
     */
    @Transient
    private String createdUserName;
    /**
     * 修改人
     */
    @Transient
    private String updateUserName;
    /**
     * 设备名称
     */
    @Transient
    private String sbName;
    /**
     * 部件名称
     */
    @Transient
    private String partName;

    /**
     * 数据权限
     */
    @Transient
    private DataScope dataScope;

}
